#ifndef TRIAL_PROTOCOL_H
#define TRIAL_PROTOCOL_H
#include <stdbool.h>
// 定义链表节点
typedef struct ListNode {
    int data;
    struct ListNode* next;
} ListNode;

/* 基于链表实现的队列 */
typedef struct {
    ListNode *front, *rear;
    int queSize;
} LinkedListQueue;

/* 构造函数 */
LinkedListQueue *newLinkedListQueue();
/* 析构函数 */
void delLinkedListQueue(LinkedListQueue *queue);

/* 获取队列的长度 */
int size(LinkedListQueue *queue);
/* 判断队列是否为空 */
bool isEmpty(LinkedListQueue *queue);

/* 入队 */
void push_back(LinkedListQueue *queue, int num);

int atFirst(LinkedListQueue *queue);

int atLast(LinkedListQueue *queue);

/* 出队 */
int pop(LinkedListQueue *queue);

/* 打印队列 */
void printLinkedListQueue(LinkedListQueue *queue);
#endif //TRIAL_PROTOCOL_H
